home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / include / cfuncproto.h < prev    next >
C/C++ Source or Header  |  1991-10-09  |  2KB  |  78 lines

  1. /*
  2.  * cfuncproto.h --
  3.  *
  4.  *    Declarations of a macro supporting Ansi-C function prototypes in
  5.  *    Sprite. This macro allow function prototypes to be defined 
  6.  *    such that the code works on both standard and K&R C.
  7.  *
  8.  * Copyright 1990 Regents of the University of California
  9.  * Permission to use, copy, modify, and distribute this
  10.  * software and its documentation for any purpose and without
  11.  * fee is hereby granted, provided that the above copyright
  12.  * notice appear in all copies.  The University of California
  13.  * makes no representations about the suitability of this
  14.  * software for any purpose.  It is provided "as is" without
  15.  * express or implied warranty.
  16.  *
  17.  * $Header: /sprite/src/lib/include/RCS/cfuncproto.h,v 1.5 91/02/12 14:48:28 jhh Exp $ SPRITE (Berkeley)
  18.  */
  19.  
  20. #ifndef _CFUNCPROTO
  21. #define _CFUNCPROTO
  22.  
  23. /*
  24.  * Definition of the _ARGS_ macro.  The _ARGS_ macro such be used to 
  25.  * enclose the argument list of a function prototype.  For example, the
  26.  * function:
  27.  * extern int main(argc, argv)
  28.  *    int args;
  29.  *     char **argv;
  30.  *
  31.  * Would have a prototype of:
  32.  *
  33.  * extern int main _ARGS_((int argc, char **argv))
  34.  *
  35.  * Currently the macro uses the arguments only when compiling the
  36.  * KERNEL with a standard C compiler.
  37.  */
  38.  
  39. #ifndef _ASM
  40.  
  41. #if defined(KERNEL) && defined(__STDC__)
  42. #define _HAS_PROTOTYPES
  43. #define _HAS_VOIDPTR
  44. #endif
  45.  
  46. #if defined(__cplusplus)
  47. #define _EXTERN         extern "C"
  48. #define _NULLARGS    (void) 
  49. #define _HAS_PROTOTYPES
  50. #define _HAS_VOIDPTR
  51. #define _HAS_CONST
  52. #else 
  53. #define _EXTERN         extern
  54. #define _NULLARGS    () 
  55. #endif
  56.  
  57. #if defined(_HAS_PROTOTYPES) && !defined(lint)
  58. #define    _ARGS_(x)    x
  59. #else
  60. #define    _ARGS_(x)    ()
  61. #endif
  62.  
  63. #ifdef _HAS_CONST
  64. #define _CONST          const
  65. #else
  66. #define _CONST
  67. #endif
  68.  
  69. #ifdef _HAS_VOIDPTR
  70. typedef void *_VoidPtr;
  71. #else
  72. typedef char *_VoidPtr;
  73. #endif
  74.  
  75. #endif /* _ASM */
  76. #endif /* _CFUNCPROTO */
  77.  
  78.